home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Your Apple Games Gallery 1
/
Your Apple Games Gallery (Side A)(MicroSPARC, Inc.)(1988).do
/
FORMULA.NIBBLE.bas
< prev
next >
Wrap
BASIC Source File
|
2021-12-11
|
8KB
|
157 lines
10 REM **********************
20 REM * FORMULA.NIBBLE *
30 REM * BY COLIN FRENCH *
40 REM * COPYRIGHT (C) 1986 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM **********************
80 ONERR GOTO 1570
90 TEXT : HOME : PRINT CHR$(21): IF PEEK(104) = 12 THEN 110
100 POKE 104,12: POKE 3072,0: PRINT CHR$(4)"RUN FORMULA.NIBBLE"
110 REM ---INITIALIZATION---
120 LOMEM: 35840:D$ = CHR$(4)
130 PRINT D$"BLOAD TRK.SCREEN1": PRINT D$"BLOAD TRK.SCREEN2,A$4000"
140 P = -16297: POKE P,0: POKE P -4,0: REM (SET HI-RES MIXED)
150 POKE P -3,0: POKE P -7,0: REM (DISPLAY SCREEN 1)
160 V = 22: GOSUB 1470: PRINT D$"BLOAD RACE.RECORDS,A$800": PRINT D$"BLOAD TRK.TABLES"
170 PRINT D$"BLOAD TRK.CURVE.DATA": PRINT D$"BLOAD TRK.ROUTINES"
180 TRK$(0) = "..MONACO":TRK$(1) = ".DETROIT":TRK$(2) = "MONTREAL"
190 SK$(0) = "..ROOKIE":SK$(1) = "CHAMPION"
200 EVT$(0) = "PRACTICE":EVT$(1) = "....RACE"
210 CTRL$(0) = "KEYBOARD":CTRL$(1) = "..PADDLE":CTRL$(2) = "JOYSTICK"
220 FOR N = 0 TO 2: FOR N2 = 0 TO 3: READ BLK(N,N2): NEXT N2,N
230 DATA 2,128,129,130,3,132,134,135,3,136,138,139
240 MES$(0) = " (USE ARROWS & <RETURN> TO SELECT)":MES$(1) = " (USE PADDLE AND BUTTON TO SELECT)":MES$(2) = " (USE JOYSTICK & BUTTON TO SELECT)"
250 FRST = 1:DLY = 100:VA = 1:PP = 0:LC = 1
260 POKE 24579,1: REM (SOUND FLAG)
270 Z = 24597: POKE Z, ASC("A") +128: POKE Z +1, ASC("Z") +128: REM (ACCEL & DECEL KEYS)
280 POKE Z +2, ASC("J") +128: POKE Z +3, ASC("K") +128: POKE Z +4, ASC("L") +128: REM (STEERING KEYS)
290 REM ---INTRODUCTION---
300 HOME : VTAB 23: POKE -16301,0: PRINT " (PRESS KEY OR BUTTON FOR MENU)"
310 GOSUB 1420: IF ST THEN 350
320 HOME :V = 22: GOSUB 1470: GOSUB 1420: IF ST THEN 350
330 IF FRST THEN 290
340 POKE -16302,0: GOSUB 1420: IF NOT (ST) THEN 290
350 REM ---MAIN MENU---
360 TEXT : HOME :V = 4: GOSUB 1470: VTAB 9: HTAB 11: PRINT "START YOUR ENGINES!!": PRINT
370 HTAB 11: PRINT "CIRCUIT....."TRK$(TC): HTAB 11: PRINT "SKILL......."SK$(SC): REM 5/7 PER.
380 HTAB 11: PRINT "EVENT......."EVT$(EC): HTAB 11: PRINT "# LAPS............."LC: REM 7/13 PER.
390 HTAB 11: PRINT "CONTROL....."CTRL$(CC): PRINT
400 HTAB 11: PRINT "SEE THE RACE RECORDS": PRINT
410 HTAB 11: PRINT "QUIT....QUIT....QUIT": VTAB 23: PRINT MES$(CC)
420 VA = 1: VTAB VA +8:VB = 0: POKE -16368,0
430 HTAB 6: PRINT " ": VTAB VA +8: HTAB 6: PRINT "--->";
440 IF CC = 0 THEN 450
450 K = PEEK( -16384): IF K <128 THEN 490
460 POKE -16368,0
470 IF K = 136 OR K = 139 THEN VB = VB -25: IF VB <0 THEN VB = 0
480 IF K = 149 OR K = 138 THEN VB = VB +25: IF VB >255 THEN VB = 255
490 IF K = 141 OR PEEK( -16287) >127 THEN 510
500 VA = INT(VB/25) +1: GOTO 430
510 IF PEEK( -16287) >127 THEN 510
520 ON VA GOTO 800,430,540,570,590,630,710,430,750,430
530 HOME : END
540 REM (TRACK SELECTION)
550 TC = TC +1: IF TC >2 THEN TC = 0
560 VTAB 11: HTAB 23: PRINT TRK$(TC): GOTO 430
570 REM (SKILL SELECTION)
580 SC = NOT (SC): VTAB 12: HTAB 23: PRINT SK$(SC): GOTO 430
590 REM (EVENT SELECTION)
600 EC = NOT (EC): VTAB 13: HTAB 23: PRINT EVT$(EC)
610 IF EC THEN LC = 5: VTAB 14: HTAB 30: PRINT LC
620 GOTO 430
630 REM (# LAPS SELECTION)
640 VTAB 14: HTAB 11
650 IF NOT (EC) THEN 670
660 PRINT "RACE IS ALWAYS 5 LAPS";: FOR D = 1 TO 1200: NEXT : GOTO 690
670 PRINT "ENTER # LAPS (1-9) ";
680 GET Z$:Z = VAL(Z$): IF Z >0 AND Z <10 THEN LC = Z
690 VTAB 14: HTAB 11: PRINT "# LAPS............."LC" ": REM 13 PER.
700 GOTO 430
710 REM (CONTROL SELECTION)
720 CC = CC +1: IF CC >2 THEN CC = 0
730 VTAB 15: HTAB 23: PRINT CTRL$(CC)
740 VTAB 23: PRINT MES$(0): VTAB VA +8: GOTO 430
750 REM (DISPLAY RACE RECORDS)
760 POKE -16303,0: POKE -16299,0
770 IF PEEK( -16287) <128 AND PEEK( -16384) <128 THEN 770
780 POKE -16368,0: IF PEEK( -16287) >127 THEN 780
790 POKE -16300,0: GOTO 430
800 REM ---START EVENT---
810 PRINT : POKE 24580,LC: REM (# OF LAPS)
820 REM (SET SKILL FACTORS: TOP SPEED & CORNERING ABILITY)
830 IF SC = 0 THEN POKE 24592,218: POKE 24595,5
840 IF SC = 1 THEN POKE 24592,250: POKE 24595,5
850 REM (SET TYPE OF CONTROL TO USE)
860 POKE 24587, NOT (CC)
870 REM (SET TRACK BLOCK FACTORS)
880 POKE 24624,BLK(TC,0): POKE 24625,BLK(TC,1)
890 POKE 24626,BLK(TC,2): POKE 24627,BLK(TC,3)
900 CALL 24704: REM (START GAME!)
910 IF PEEK(24577) >0 THEN TEXT : HOME : END
920 FRST = 0: REM (FLAG SHOWS GAME PLAYED)
930 IF PEEK( -16287) >127 THEN 930
940 IF PEEK(24578) = 1 OR EC = 0 THEN 290
950 REM (GET PLAYER'S TIME)
960 P1 = INT( PEEK(24584)/16):P2 = PEEK(24584) -P1 *16
970 P3 = INT( PEEK(24583)/16):P4 = PEEK(24583) -P3 *16
980 P5 = PEEK(24582)
990 PT$ = STR$(P1) + STR$(P2) +":" + STR$(P3) + STR$(P4) +"." + STR$(P5)
1000 REM (CHECK IF RECORD)
1010 FOR L = 0 TO 2: GOSUB 1350: GOSUB 1400
1020 IF T$ = "00:00.0" THEN 1040
1030 IF PT$ > = T$ THEN NEXT L: GOTO 290
1040 LL = L:LADD = ADD
1050 HOME : VTAB 22: INVERSE : POKE -16301,0
1060 PRINT " A NEW RECORD! ";: NORMAL
1070 IF PEEK(24579) = 1 THEN FOR N = 1 TO 3: CALL 25638: NEXT : REM (SOUND)
1080 PRINT " TYPE YOUR INITIALS ---"; CHR$(8); CHR$(8); CHR$(8);:N$ = ""
1090 GET Z$: IF Z$ = CHR$(13) THEN PRINT : GOTO 1150
1100 IF Z$ = CHR$(8) AND N$ < >"" THEN 1130
1110 IF Z$ <" " OR LEN(N$) >2 THEN 1090
1120 PRINT Z$;:N$ = N$ +Z$: GOTO 1090
1130 PRINT Z$"-"Z$;: IF LEN(N$) = 1 THEN N$ = "": GOTO 1090
1140 N$ = LEFT$(N$, LEN(N$) -1): GOTO 1090
1150 PC$ = LEFT$(N$ +"---",3): IF LL = 2 THEN 1220
1160 FOR L = 2 TO LL +1 STEP -1
1170 L = L -1: GOSUB 1350: GOSUB 1380: GOSUB 1400
1180 L = L +1: GOSUB 1350
1190 FOR N = 0 TO 2: POKE ADD +N, ASC( MID$ (C$,N +1,1)) +128: NEXT
1200 FOR N = 4 TO 10: POKE ADD +N, ASC( MID$ (T$,N -3,1)) +128: NEXT
1210 NEXT L
1220 FOR N = 0 TO 2: POKE LADD +N, ASC( MID$ (PC$,N +1,1)) +128: NEXT
1230 FOR N = 4 TO 10: POKE LADD +N, ASC( MID$ (PT$,N -3,1)) +128: NEXT
1240 POKE -16303,0: POKE -16299,0: VTAB 20: PRINT
1250 ONERR GOTO 1270
1260 PRINT D$"VERIFY RACE.RECORDS": POKE 216,0: GOTO 1300
1270 TEXT : HOME : VTAB 10: PRINT "PLEASE PUT DISK WITH 'RACE.RECORDS'"
1280 PRINT "BACK IN DISK DRIVE & PRESS <RETURN> ";: GET Z$: PRINT
1290 POKE -16299,0: GOTO 1260
1300 PRINT D$"BSAVE RACE.RECORDS,A$800,L$400"
1310 IF PEEK( -16287) <128 AND PEEK( -16384) <128 THEN 1310
1320 POKE -16368,0: IF PEEK( -16287) >127 THEN 1320
1330 GOTO 350
1340 REM ---GET RACE RECORD INFO---
1350 REM (TEXT LINE ADDRESS)
1360 LN = TC *4 +L +10:L1 = INT(LN/8):L2 = LN -L1 *8
1370 ADD = 2048 +L1 *40 +L2 *128 +SC *14 +14: RETURN
1380 REM (GET INITIALS)
1390 C$ = "": FOR N = 0 TO 2:C$ = C$ + CHR$( PEEK(ADD +N) -128): NEXT : RETURN
1400 REM (GET TIME)
1410 T$ = "": FOR N = 4 TO 10:T$ = T$ + CHR$( PEEK(ADD +N) -128): NEXT : RETURN
1420 REM ---WAIT FOR KEYPRESS/BUTTON---
1430 ST = 0: FOR D = 1 TO DLY
1440 IF PEEK( -16384) >127 THEN D = DLY:ST = 1: POKE -16368,0
1450 IF PEEK( -16287) >127 THEN D = DLY:ST = 1
1460 NEXT D: RETURN
1470 REM ---DRAW FORMULA.NIBBLE LOGO---
1480 VTAB V: HTAB 1: GOSUB 1530: PRINT " FORMULA NIBBLE ";: REM (16 DASHES)
1490 GOSUB 1550: VTAB V +1: HTAB 1: GOSUB 1550
1500 PRINT " COPYRIGHT 1986 ";: GOSUB 1530
1510 VTAB V +2: HTAB 1: GOSUB 1530
1520 PRINT " BY MICROSPARC ";: GOSUB 1550: VTAB 4: PRINT : RETURN : REM 16 -'S
1530 FOR N = 1 TO 6: PRINT " ";: INVERSE
1540 PRINT " ";: NORMAL : NEXT : RETURN
1550 FOR N = 1 TO 5: INVERSE : PRINT " ";: NORMAL
1560 PRINT " ";: NEXT : INVERSE : PRINT " ";: NORMAL : RETURN
1570 HOME : TEXT : VTAB 12: PRINT "ERROR " PEEK(222)" IN LINE " PEEK(218) +256 * PEEK(219): END